/* eslint valid-jsdoc: "off" */
// 开发环境
'use strict';
const path = require('path');
/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = (appInfo) => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = (exports = {});

  config.multipart = {
    mode: 'stream',
    fileModeMatch: /(\/pageTemplate)$/, // pageTemplate接口使用file模式，其他使用stream模式
    whitelist: ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.grf', '.json'],
    fileSize: '50mb',
    fieldSize: '1024kb',
  };

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1620907179607_4201';
  // 在此处添加中间件配置
  config.middleware = ['auth'];

  // add your middleware config here
  // 配置指定的前端地址
  config.cors = {
    origin: '*',
    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
    // 下面这条加上才能共享跨域session，同时前端ajax请求也要加上响应的参数
    // credentials: true,
  };
  config.security = {
    // 关闭csrf验证
    csrf: false,
    // 白名单
    domainWhiteList: ['*'],
  };
  // 开发环境日志写入路径
  config.logger = {
    level: 'INFO',
    dir: path.join(__dirname, '../logs/dev'),
  };
  // 连接mongodb的配置
  config.mongoose = {
    client: {
      url: 'mongodb://127.0.0.1:27017/template', // 本地
      options: {
        useNewUrlParser: true,
        useUnifiedTopology: true,
      },
    },
  };
  // 生成token的秘钥
  config.jwt = {
    secret: 'ml920226',
  };

  exports.swaggerdoc = {
    dirScanner: './app/controller', // 配置自动扫描的控制器路径
    apiInfo: {
      title: '模板管理接口文档', // 接口文档的标题
      description: '模板管理接口文档', // 接口文档描述
      version: '1.0.0', // 接口文档版本
      termsOfService: 'http://swagger.io/terms/', // 服务条件
      contact: {
        email: '', // 联系方式邮箱
      },
      license: {
        name: '',
        url: '',
      },
    },
    basePath: '', // 配置基础路径
    schemes: ['http', 'https'], // 配置支持的协议
    consumes: ['application/json'], // 指定处理请求的提交内容类型 (Content-Type)，如 application/json、text/html
    produces: ['application/json'], // 指定返回的内容类型，仅当 request 请求头中的(Accept)类型中包含该指定类型才返回
    securityDefinitions: {}, // 配置接口安全授权方式
    enableSecurity: false, // 是否启用授权，默认 false
    // enableValidate: true, // 是否启用参数校验，默认 true
    routerMap: false, // 是否启用自动生成路由(实验功能)，默认 true
    enable: true, // 默认 true
  };
  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
  };

  const http = {
    headers: {
      common: {
        'Content-Type':
          'multipart/form-data; boundary=----WebKitFormBoundarygQ3KKTW7SfS08bIJ',
      },
    },
    timeout: 10000,
  };

  return {
    ...config,
    ...userConfig,
    http,
  };
};
